#!/usr/bin/env python
"""
迁移SubProject的college字段数据的脚本
将现有的college字符串值转换为College外键关联
"""
import os
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'educational_system.settings')
django.setup()

from apps.accounts.models import College
from apps.subprojects.models import SubProject
from django.db import transaction

def migrate_college_data():
    """迁移college字段数据"""
    print("开始迁移SubProject的college字段数据...")
    
    # 获取默认学院（如果现有数据没有匹配的学院）
    default_college = College.objects.first()
    if not default_college:
        print("错误：没有找到任何学院数据，请先创建学院")
        return
    
    print(f"默认学院：{default_college.name}")
    
    # 由于我们已经改变了模型结构，这里需要直接操作数据库
    # 但首先让我们检查是否有现有的SubProject数据
    try:
        subproject_count = SubProject.objects.count()
        print(f"当前SubProject数量：{subproject_count}")
        
        if subproject_count == 0:
            print("没有现有的SubProject数据需要迁移")
            return
        
        # 如果有数据，我们需要为每个SubProject分配一个College
        with transaction.atomic():
            updated_count = 0
            for subproject in SubProject.objects.all():
                # 这里可以根据实际情况进行更智能的匹配
                # 目前简单地分配给默认学院
                if not hasattr(subproject, 'college') or not subproject.college:
                    subproject.college = default_college
                    subproject.save()
                    updated_count += 1
            
            print(f"成功更新了 {updated_count} 个SubProject记录")
            
    except Exception as e:
        print(f"迁移过程中出现错误：{e}")
        print("这可能是因为数据库结构还没有完全更新")

if __name__ == '__main__':
    migrate_college_data()